package cn.easybuy.util;

import java.util.*;

import cn.easybuy.entity.Product;

/**
 * 购物车 信息封装
 * 
 *  购物车 有2个或以上商品的集合
 *        商品总价
 *  
 *  借助订单主表去理解这个类的作用
 * @author Tom
 *
 */
public class ShoppingCart {	
	//private List<Product> cartList = new ArrayList<Product>(); //购物车 有2个或以上商品的集合
	//因为 product 对象中,是没有购物车购买数量的这个栏位的
	
	private Map<Integer,ShoppingCartItem> items =new HashMap<Integer,ShoppingCartItem>();
	
	private double sumPrice ;//商品总价
	
	/**
	 * 往购物车添加数据(ShoppingCartItem)
	 * 判断商品如果已存在,就数量+1 ,否则购物车加一笔商品数据
	 * @param product
	 * @param count
	 */
	public void addProToCart(Product product, Integer count) {
		// TODO Auto-generated method stub
		//map中如何判断key是否存在
		ShoppingCartItem item =null;
		if(items.containsKey(product.getId())) { //如果购物车已经有这款商品 ,只要数量+1 即可
			item= items.get(product.getId()); //按id先找到对应的商品
			item.setCount(item.getCount() + count);
		}else {
			item =new ShoppingCartItem();//不存在就new
			item.setProduct(product); //商品明细
			item.setCount(count); //商品数量
		}
		
		items.put(product.getId(), item);//添加到购物车
		//成功添加一笔数据到购物车之后,要重新算一次购物车的总价
		//因为这个总价的值,没有放到数据库中,也不会自动更新
		caclSum();
	}
	public void caclSum() {
		// TODO Auto-generated method stub
		//遍历购物车中 所有的商品 ShoppingCartItem,总价累计
		double sum = 0;
		Iterator<ShoppingCartItem> its =  items.values().iterator() ;//理解成foreach遍历List集合
		while (its.hasNext()) {
			ShoppingCartItem item =its.next();
			sum +=item.getPrice(); //香水或者是电饭煲的价格累加
		}
		this.setSumPrice(sum);
	}



	public Map<Integer, ShoppingCartItem> getItems() {
		return items;
	}

	public void setItems(Map<Integer, ShoppingCartItem> items) {
		this.items = items;
	}

	public double getSumPrice() {
		return sumPrice;
	}

	public void setSumPrice(double sumPrice) {
		this.sumPrice = sumPrice;
	}

}
